home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 7 / Amiga Format AFCD07 (Dec 1996, Issue 91).iso / serious / shareware / programming / emacs-complete / fsf / emacs / src / syswait.h < prev    next >
C/C++ Source or Header  |  1994-02-20  |  3KB  |  90 lines

  1. /* Define wait system call interface for Emacs.
  2.    Copyright (C) 1993, 1994 Free Software Foundation, Inc.
  3.  
  4. This file is part of GNU Emacs.
  5.  
  6. GNU Emacs is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2, or (at your option)
  9. any later version.
  10.  
  11. GNU Emacs is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GNU Emacs; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20. /* Define the structure that the wait system call stores.
  21.    On many systems, there is a structure defined for this.
  22.    But on vanilla-ish USG systems there is not.  */
  23.  
  24. #ifndef VMS
  25. #ifndef WAITTYPE
  26. #if (!defined (BSD) && !defined (UNIPLUS) && !defined (STRIDE) && !(defined (HPUX) && !defined (NOMULTIPLEJOBS)) && !defined (HAVE_WAIT_HEADER)) || defined (LINUX)
  27. #define WAITTYPE int
  28. #define WIFSTOPPED(w) ((w&0377) == 0177)
  29. #define WIFSIGNALED(w) ((w&0377) != 0177 && (w&~0377) == 0)
  30. #define WIFEXITED(w) ((w&0377) == 0)
  31. #define WRETCODE(w) (w >> 8)
  32. #define WSTOPSIG(w) (w >> 8)
  33. #define WTERMSIG(w) (w & 0377)
  34. #ifndef WCOREDUMP
  35. #define WCOREDUMP(w) ((w&0200) != 0)
  36. #endif
  37. #else 
  38. #ifdef BSD4_1
  39. #include <wait.h>
  40. #else
  41. #include <sys/wait.h>
  42. #endif /* not BSD 4.1 */
  43.  
  44. #define WAITTYPE union wait
  45. #define WRETCODE(w) w.w_retcode
  46. #undef WCOREDUMP        /* Later BSDs define this name differently.  */
  47. #define WCOREDUMP(w) w.w_coredump
  48.  
  49. #if defined (HPUX) || defined (convex)
  50. /* HPUX version 7 has broken definitions of these.  */
  51. /* pvogel@convex.com says the convex does too.  */
  52. #undef WTERMSIG
  53. #undef WSTOPSIG
  54. #undef WIFSTOPPED
  55. #undef WIFSIGNALED
  56. #undef WIFEXITED
  57. #endif /* HPUX | convex */
  58.  
  59. #ifndef WTERMSIG
  60. #define WTERMSIG(w) w.w_termsig
  61. #endif
  62. #ifndef WSTOPSIG
  63. #define WSTOPSIG(w) w.w_stopsig
  64. #endif
  65. #ifndef WIFSTOPPED
  66. #define WIFSTOPPED(w) (WTERMSIG (w) == 0177)
  67. #endif
  68. #ifndef WIFSIGNALED
  69. #define WIFSIGNALED(w) (WTERMSIG (w) != 0177 && (WSTOPSIG (w)) == 0)
  70. #endif
  71. #ifndef WIFEXITED
  72. #define WIFEXITED(w) (WTERMSIG (w) == 0)
  73. #endif
  74. #endif /* BSD or UNIPLUS or STRIDE */
  75. #endif /* no WAITTYPE */
  76. #else /* VMS */
  77. #define WAITTYPE int
  78. #define WIFSTOPPED(w) 0
  79. #define WIFSIGNALED(w) 0
  80. #define WIFEXITED(w) ((w) != -1)
  81. #define WRETCODE(w) (w)
  82. #define WSTOPSIG(w) (w)
  83. #define WCOREDUMP(w) 0
  84. #define WTERMSIG(w) (w)
  85. #include <ssdef.h>
  86. #include <iodef.h>
  87. #include <clidef.h>
  88. #include "vmsproc.h"
  89. #endif /* VMS */
  90.